﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Infragistics.Win.UltraMessageBox;

namespace WindowsFormApplication.FormBase
{
    public partial class frmBaseTreeDetail : Form
    {
        public enum ActionMode
        {
            AddNew = 0,
            Edit = 1,
            Delete = 2,
            None = 3
        }

        public string KeyValue { get; set; }

        public string FormCaption { get; set; }

        public ActionMode eActionMode { get; set; }

        protected virtual void ShowMessageBox(string message, string header, MessageBoxButtons buttons, MessageBoxIcon icon)
        {
            using (UltraMessageBoxInfo ultraMessageBoxInfo = new UltraMessageBoxInfo())
            {
                ultraMessageBoxInfo.Text = message;
                ultraMessageBoxInfo.Caption = "Hệ thống quản lý nhà hàng- Nhóm phát triển phần mềm HUMG";
                ultraMessageBoxInfo.Header = header;
                ultraMessageBoxInfo.Footer = "Hệ thống được phát triển bởi nhóm phát triển phần mềm CNPM53- HUMG";
                ultraMessageBoxInfo.Buttons = buttons;
                ultraMessageBoxInfo.Icon = icon;

                messageBoxManager.ShowMessageBox(ultraMessageBoxInfo);
            }
        }

        protected virtual DialogResult ShowMessageBoxReusult(string message, string header, MessageBoxButtons buttons, MessageBoxIcon icon)
        {
            using (UltraMessageBoxInfo ultraMessageBoxInfo = new UltraMessageBoxInfo())
            {
                ultraMessageBoxInfo.Text = message;
                ultraMessageBoxInfo.Caption = "Hệ thống quản lý nhà hàng- Nhóm phát triển phần mềm HUMG";
                ultraMessageBoxInfo.Header = header;
                ultraMessageBoxInfo.Footer = "Hệ thống được phát triển bởi nhóm phát triển phần mềm CNPM53- HUMG";
                ultraMessageBoxInfo.Buttons = buttons;
                ultraMessageBoxInfo.Icon = icon;

                //messageBoxManager.ShowMessageBox(ultraMessageBoxInfo);
                DialogResult result = messageBoxManager.ShowMessageBox(ultraMessageBoxInfo);
                if (result == System.Windows.Forms.DialogResult.OK)
                    return DialogResult.OK;
                else if (result == System.Windows.Forms.DialogResult.Cancel)
                    return DialogResult.Cancel;
                else
                    return DialogResult.Retry; //chua xu ly het
            }
        }

        protected virtual bool SaveData()
        {
            return true;
        }

        protected virtual bool ValidData()
        {
            return true;
        }

        protected virtual void Help()
        {
        }

        protected virtual void InitData()
        {
        }

        protected virtual void LoadFormDetail()
        {
            if (eActionMode == ActionMode.AddNew)
                this.Text = "Thêm mới dữ liệu " + this.FormCaption;
            else
                this.Text = "Sửa dữ liệu " + this.FormCaption;

            InitData();
        }

        public frmBaseTreeDetail()
        {
            InitializeComponent();
        }

        private void btnSave_Click(object sender, EventArgs e)
        {
            try
            {
                if (ValidData() == true)
                {
                    if (ShowMessageBoxReusult("Bạn có muốn lưu dữ liệu không ?", "Thay đổi dữ liệu danh mục !", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == System.Windows.Forms.DialogResult.OK)
                    {
                        var result = SaveData();
                        if (result == true) { this.Close(); }
                        else { return; }
                    }
                    else { return; }
                }
                else { return; }
            }
            catch (Exception ex) { ShowMessageBox(ex.Message, "Thông báo lỗi từ hệ thống !", MessageBoxButtons.OK, MessageBoxIcon.Error); }
        }

        private void btnClose_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void frmBaseTreeDetail_Load(object sender, EventArgs e)
        {
            try { LoadFormDetail(); }
            catch (ApplicationException ex) { ShowMessageBox(ex.Message, "Thông báo thay đổi dữ liệu !", MessageBoxButtons.OK, MessageBoxIcon.Error); }
        }
    }
}
